#ifndef AGT_CAMERA_H
#define AGT_CAMERA_H

namespace agtk {

class Camera
{
public:
	/** Camera constructor. **/
	Camera(void);

	/** Camera constructor. **/
	Camera(Vec3<float> position, Vec3<float> focalPoint, Vec3<float> up);

	/** Camera destructor. **/
	~Camera(void);

	/** Get position vector. **/
	Vec3<float>* GetPosition(void);

	/** Get focal point position vector. **/
	Vec3<float>* GetFocalPoint(void);

	/** Get up vector. **/
	Vec3<float>* GetUp(void);

	/** Pan the camera. **/
	void Pan(Vec2<float> direction); // Incomplete

private:
	/** Position in 3D space of the cameras nodal point (centre of focal plane). **/
	Vec3<float>* m_position;

	/** Point in space at which the camera is looking at. **/
	Vec3<float>* m_focalPoint;

	/** Upwards pointing vector. Defines the camera's tilt. **/
	Vec3<float>* m_up;

	/*
	It would be nice to have some other params here like zoom, iris (for depth of field) and filters.
	Motion blur?
	*/
};

}

#endif